package org.larkdoc.dao;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.larkdoc.model.entity.UserInfo;
/**
 * 用户信息Mapper接口类
 * 
 * @author  zhangpeijun[zhangpeijun1024@qq.com]
 * @version  [v1.0.1, 2017年10月17日]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */
@Mapper
public interface UserInfoMapper {
    /**
     * 根据ID删除数据
     * @param id
     * @return
     * 
     * @returns int
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午12:05:04
     */
    int deleteByPrimaryKey(Integer id);
    
    /**
     * 新增数据
     * @param record
     * @return
     * 
     * @returns int
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午12:07:51
     */
    int insert(UserInfo record);
    
    /**
     * 新增记录，只记录对象非空属性
     * @param record
     * @return
     * 
     * @returns int
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午12:09:30
     */
    int insertSelective(UserInfo record);
    
    /**
     * 根据ID查询数据
     * @param id
     * @return
     * 
     * @returns UserInfo
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午12:14:25
     */
    UserInfo selectByPrimaryKey(Integer id);
    
    /**
     * 根据ID更新记录，只更新参数中非空的属性
     * @param record
     * @return
     * 
     * @returns int
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午12:16:48
     */
    int updateByPrimaryKeySelective(UserInfo record);
    
    /**
     * 根据ID更新记录
     * @param record
     * @return
     * 
     * @returns int
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午12:17:15
     */
    int updateByPrimaryKey(UserInfo record);
    
    /*
     * 自定义SQL
     */
    /**
     * 根据帐号获取用户信息
     * @param account
     * @return
     * 
     * @returns UserInfo
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午12:31:10
     */
    UserInfo getByAccount(@Param("account") String account);
    
    /**
     * 用户名，名称模糊查询数据，根据最后登录时间返回前20条数据。
     * @param condition
     * @return [参数说明]
     * 
     * @return List<UserInfo> [返回类型说明]
     * @exception throws [违例类型] [违例说明]
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年6月27日下午2:44:03
     */
    List<UserInfo> queryByNameOrAccount(@Param("condition") String condition);
    /**
     * 根据项目id获取关联用户信息
     * @param projectId
     * @return
     * 
     * @returns List<UserInfo>
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午12:31:28
     */
    List<UserInfo> queryByProjectId(@Param("projectId") Integer projectId);
    
    /**
     * 根据项目id集获取关联用户信息
     * @param projectIds
     * @return
     * 
     * @returns List<UserInfo>
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午12:32:26
     */
    List<UserInfo> queryByProjectIds(@Param("projectIds") List<Integer> projectIds);
}